home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 1_2002.ISO / Data / Zips / HyperApp -326271112001.psc / HyperApp.cls < prev    next >
Encoding:
Visual Basic class definition  |  2001-10-30  |  23.0 KB  |  596 lines

  1. VERSION 1.0 CLASS
  2. BEGIN
  3.   MultiUse = -1  'True
  4.   Persistable = 0  'NotPersistable
  5.   DataBindingBehavior = 0  'vbNone
  6.   DataSourceBehavior  = 0  'vbNone
  7.   MTSTransactionMode  = 0  'NotAnMTSObject
  8. END
  9. Attribute VB_Name = "HyperApp"
  10. Attribute VB_GlobalNameSpace = False
  11. Attribute VB_Creatable = True
  12. Attribute VB_PredeclaredId = False
  13. Attribute VB_Exposed = True
  14. Option Explicit
  15.  
  16. 'Objects and object event controllers
  17. Private Script As New ScriptControl
  18. Private WithEvents Script_Sink As ScriptControl
  19. Attribute Script_Sink.VB_VarHelpID = -1
  20. Private MainIE As WebBrowser
  21. Private WithEvents MainIE_Sink As WebBrowser
  22. Attribute MainIE_Sink.VB_VarHelpID = -1
  23.  
  24. 'Member variables
  25. Private m_szPostData As String
  26. Private m_szHeaders As String
  27. Private m_HTMLDoc As HTMLDocument
  28.  
  29. Public Function Init(ByRef brw As WebBrowser) As Boolean
  30.     On Error Resume Next
  31.     Set MainIE = brw
  32.     Set MainIE_Sink = MainIE
  33.     If Err = 0 Then
  34.         Init = True
  35.     Else
  36.         Init = False
  37.     End If
  38.     
  39. End Function
  40.  
  41. Public Sub AddObject(ByVal szObjName As String, ByRef obj As Object)
  42. 'AddObject - adds publically accessable objects to the script interface
  43.  
  44.     Script.AddObject szObjName, obj, True
  45.     
  46. End Sub
  47.  
  48. Private Sub Class_Initialize()
  49.     Script.AllowUI = True   'or false, your choice
  50.     Script.language = "VBScript"    'or JavaScript/JScript, or even PerlScript or Python (if those are installed)
  51.     Script.UseSafeSubset = False    'or true, not much difference
  52.     
  53.     Set Script_Sink = Script
  54.     
  55. End Sub
  56.  
  57. Private Sub Class_Terminate()
  58.     Set Script_Sink = Nothing
  59.     
  60. End Sub
  61.  
  62. Private Sub MainIE_Sink_BeforeNavigate2(ByVal pDisp As Object, URL As Variant, Flags As Variant, TargetFrameName As Variant, PostData As Variant, Headers As Variant, Cancel As Boolean)
  63.     Dim szStatement As String
  64.     
  65.     'Retrieve document information
  66.     m_szPostData = PostData
  67.     m_szHeaders = Headers
  68.         
  69.     
  70.     If URL Like "happ://*" Then
  71.         Cancel = True
  72.         
  73.         'Retrieve the script statement (which follows 'happ://')
  74.         szStatement = Mid$(URL, 8)
  75.         If Right$(szStatement, 1) = "/" Then szStatement = DecodeHex$(Left$(szStatement, Len(szStatement) - 1))
  76.         
  77.         'Execute the script statement
  78.         Script.ExecuteStatement szStatement
  79.         
  80.     End If
  81.     
  82. End Sub
  83.  
  84. Public Function GetLastPostData() As String
  85.     GetLastPostData = m_szPostData
  86.     
  87. End Function
  88.  
  89. Public Function GetLastHeaders() As String
  90.     GetLastHeaders = m_szHeaders
  91.     
  92. End Function
  93.  
  94. Public Function GetTextValue(ByVal nIndex As Integer, ByVal szName As String) As String
  95.     'Written by Stephan
  96.     'Posted by Chris Kesler
  97.     
  98.     Set m_HTMLDoc = MainIE.document
  99.     
  100.     Dim q As Integer
  101.     
  102.     For q = 0 To m_HTMLDoc.Forms(nIndex).length - 1
  103.  
  104.  
  105.         If m_HTMLDoc.Forms(nIndex)(q).Name = szName Then
  106.             GetTextValue = m_HTMLDoc.Forms(nIndex)(q).Value
  107.             Exit For
  108.         End If
  109.     Next q
  110.     
  111. End Function
  112.  
  113. Public Sub SetTextValue(ByVal nIndex As Integer, ByVal szName As String, ByVal szText As String)
  114.     'Written by Stephan
  115.     'Posted by Chris Kesler
  116.     
  117.     Set m_HTMLDoc = MainIE.document
  118.     
  119.     Dim q As Integer
  120.     
  121.     For q = 0 To m_HTMLDoc.Forms(nIndex).length - 1
  122.  
  123.         If m_HTMLDoc.Forms(nIndex)(q).Name = szName Then
  124.  
  125.             m_HTMLDoc.Forms(nIndex)(q).Value = szText
  126.             Exit For
  127.         End If
  128.     Next q
  129.     
  130. End Sub
  131.  
  132. Public Function GetChecked(ByVal nIndex As Integer, ByVal szName As String) As Boolean
  133.     'Written by Ultimatum (with inspiration from Stephan)
  134.     
  135.     Set m_HTMLDoc = MainIE.document
  136.     
  137.     Dim q As Integer
  138.     
  139.     For q = 0 To m_HTMLDoc.Forms(nIndex).length - 1
  140.  
  141.  
  142.         If m_HTMLDoc.Forms(nIndex)(q).Name = szName Then
  143.             GetChecked = m_HTMLDoc.Forms(nIndex)(q).Checked
  144.             Exit For
  145.         End If
  146.     Next q
  147.     
  148. End Function
  149.  
  150. Public Sub SetChecked(ByVal nIndex As Integer, ByVal szName As String, ByVal bChecked As Boolean)
  151.     'Written by Stephan
  152.     'Posted by Chris Kesler
  153.     
  154.     Set m_HTMLDoc = MainIE.document
  155.     
  156.     Dim q As Integer
  157.  
  158.     For q = 0 To m_HTMLDoc.Forms(nIndex).length - 1
  159.         If m_HTMLDoc.Forms(nIndex)(q).Name = szName Then
  160.             m_HTMLDoc.Forms(nIndex)(q).Checked = bChecked
  161.             Exit For
  162.         End If
  163.     Next q
  164.     
  165. End Sub
  166.  
  167. Public Function GetComboValue(ByVal nIndex As Integer, ByVal szName As String) As String
  168.     'Written by Ultimatum (with inspiration from Stephan)
  169.     
  170.     Set m_HTMLDoc = MainIE.document
  171.     
  172.     Dim q As Integer, i As Integer
  173.  
  174.     For q = 0 To m_HTMLDoc.Forms(nIndex).length - 1
  175.         If (m_HTMLDoc.Forms(nIndex)(q).Name = szName) Then
  176.             i = m_HTMLDoc.Forms(nIndex)(q).Options.selectedIndex
  177.             GetComboValue = m_HTMLDoc.Forms(nIndex)(q).Options(i).Value
  178.         End If
  179.     Next q
  180.     
  181. End Function
  182.  
  183.  
  184. Public Sub SetComboByValue(ByVal nIndex As Integer, ByVal szName As String, ByVal szValue As String)
  185.     'Written by Stephan
  186.     'Posted by Chris Kesler
  187.     
  188.     Set m_HTMLDoc = MainIE.document
  189.     
  190.     Dim q As Integer, i As Integer
  191.  
  192.     For q = 0 To m_HTMLDoc.Forms(nIndex).length - 1
  193.         If (m_HTMLDoc.Forms(nIndex)(q).Name = szName) Then
  194.             For i = 0 To m_HTMLDoc.Forms(nIndex)(q).length - 1
  195.                 If m_HTMLDoc.Forms(nIndex)(q).Options(i).Value = szValue Then
  196.                     m_HTMLDoc.Forms(nIndex)(q).Options(i).Selected = True
  197.                     Exit For
  198.                 End If
  199.             Next i
  200.         End If
  201.     Next q
  202. End Sub
  203.  
  204. Public Function GetComboText(ByVal nIndex As Integer, ByVal szName As String) As String
  205.     'Written by Ultimatum (with inspiration from Stephan)
  206.     
  207.     Set m_HTMLDoc = MainIE.document
  208.     
  209.     Dim q As Integer, i As Integer
  210.  
  211.     For q = 0 To m_HTMLDoc.Forms(nIndex).length - 1
  212.         If (m_HTMLDoc.Forms(nIndex)(q).Name = szName) Then
  213.             i = m_HTMLDoc.Forms(nIndex)(q).Options.selectedIndex
  214.             GetComboText = m_HTMLDoc.Forms(nIndex)(q).Options(i).Text
  215.         End If
  216.     Next q
  217.     
  218. End Function
  219.  
  220.  
  221. Public Sub SetComboByText(ByVal nIndex As Integer, ByVal szName As String, ByVal szText As String)
  222.     'Written by Stephan
  223.     'Posted by Chris Kesler
  224.     
  225.     Set m_HTMLDoc = MainIE.document
  226.     
  227.     Dim q As Integer, i As Integer
  228.  
  229.     For q = 0 To m_HTMLDoc.Forms(nIndex).length - 1
  230.         If (m_HTMLDoc.Forms(nIndex)(q).Name = szName) Then
  231.             For i = 0 To m_HTMLDoc.Forms(nIndex)(q).length - 1
  232.                 If m_HTMLDoc.Forms(nIndex)(q).Options(i).Value = szText Then
  233.                     m_HTMLDoc.Forms(nIndex)(q).Options(i).Selected = True
  234.                     Exit For
  235.                 End If
  236.             Next i
  237.         End If
  238.     Next q
  239. End Sub
  240.  
  241. Public Function GetRadioState(ByVal nIndex As Integer, ByVal szGroupID As String, ByVal szName As String) As Boolean
  242.     'Written by Ultimatum (with inspiration from Stephan)
  243.     
  244.     Set m_HTMLDoc = MainIE.document
  245.     
  246.     Dim q As Integer
  247.  
  248.     For q = 0 To m_HTMLDoc.Forms(nIndex).length - 1
  249.  
  250.         If (m_HTMLDoc.Forms(nIndex)(q).Name = szGroupID) And (m_HTMLDoc.Forms(nIndex)(q).Value = szName) Then
  251.             GetRadioState = m_HTMLDoc.Forms(nIndex)(q).Checked
  252.             Exit For
  253.         End If
  254.         
  255.     Next q
  256.  
  257. End Function
  258.  
  259. Public Sub SetRadioState(ByVal nIndex As Integer, ByVal szGroupID As String, ByVal szName As String, ByVal bOn As Boolean)
  260.     'Written by Stephan
  261.     'Posted by Chris Kesler
  262.     
  263.     Set m_HTMLDoc = MainIE.document
  264.     
  265.     Dim q As Integer
  266.  
  267.     For q = 0 To m_HTMLDoc.Forms(nIndex).length - 1
  268.  
  269.         If (m_HTMLDoc.Forms(nIndex)(q).Name = szGroupID) And (m_HTMLDoc.Forms(nIndex)(q).Value = szName) Then
  270.             m_HTMLDoc.Forms(nIndex)(q).Checked = True
  271.             Exit For
  272.         End If
  273.         
  274.     Next q
  275.     
  276. End Sub
  277.  
  278. Public Function GetCheckedRadioFromGroup(ByVal nIndex As Integer, ByVal szGroupID As String) As String
  279.     'Written by Ultimatum
  280.     
  281.     Set m_HTMLDoc = MainIE.document
  282.     
  283.     Dim q As Integer
  284.  
  285.     For q = 0 To m_HTMLDoc.Forms(nIndex).length - 1
  286.  
  287.         If (m_HTMLDoc.Forms(nIndex)(q).Name = szGroupID) And (m_HTMLDoc.Forms(nIndex)(q).Checked = True) Then
  288.             GetCheckedRadioFromGroup = m_HTMLDoc.Forms(nIndex)(q).Value
  289.             Exit For
  290.         End If
  291.         
  292.     Next q
  293.     
  294. End Function
  295.  
  296. Public Function GetLink(ByVal nIndex As Integer) As String
  297.     Set m_HTMLDoc = MainIE.document
  298.     GetLink = m_HTMLDoc.links(nIndex).href
  299.     
  300. End Function
  301.  
  302. Public Function GetImage(ByVal nIndex As Integer) As String
  303.     Set m_HTMLDoc = MainIE.document
  304.     GetImage = m_HTMLDoc.images(nIndex).src
  305.         
  306. End Function
  307.  
  308. Public Function GetSource() As String
  309.     Set m_HTMLDoc = MainIE.document
  310.     GetSource = m_HTMLDoc.All(0).outerHTML
  311.     
  312. End Function
  313.  
  314. Public Sub LoadHTML(ByVal szSource As String)
  315.     MainIE.navigate "about:" & szSource
  316.     
  317. End Sub
  318.  
  319. Public Function GetTitle() As String
  320.     Set m_HTMLDoc = MainIE.document
  321.     GetTitle = m_HTMLDoc.Title
  322.     
  323. End Function
  324.  
  325. Public Property Get DocumentObject() As Object
  326.     Set DocumentObject = m_HTMLDoc
  327.     
  328. End Property
  329.  
  330. Public Function DecodeHex(ByVal szString As String) As String
  331.     DecodeHex = szString
  332.     DecodeHex = Replace$(DecodeHex, "%00", Chr$(0))
  333.     DecodeHex = Replace$(DecodeHex, "%01", Chr$(1))
  334.     DecodeHex = Replace$(DecodeHex, "%02", Chr$(2))
  335.     DecodeHex = Replace$(DecodeHex, "%03", Chr$(3))
  336.     DecodeHex = Replace$(DecodeHex, "%04", Chr$(4))
  337.     DecodeHex = Replace$(DecodeHex, "%05", Chr$(5))
  338.     DecodeHex = Replace$(DecodeHex, "%06", Chr$(6))
  339.     DecodeHex = Replace$(DecodeHex, "%07", Chr$(7))
  340.     DecodeHex = Replace$(DecodeHex, "%08", Chr$(8))
  341.     DecodeHex = Replace$(DecodeHex, "%09", Chr$(9))
  342.     DecodeHex = Replace$(DecodeHex, "%0A", Chr$(10))
  343.     DecodeHex = Replace$(DecodeHex, "%0B", Chr$(11))
  344.     DecodeHex = Replace$(DecodeHex, "%0C", Chr$(12))
  345.     DecodeHex = Replace$(DecodeHex, "%0D", Chr$(13))
  346.     DecodeHex = Replace$(DecodeHex, "%0E", Chr$(14))
  347.     DecodeHex = Replace$(DecodeHex, "%0F", Chr$(15))
  348.     DecodeHex = Replace$(DecodeHex, "%10", Chr$(16))
  349.     DecodeHex = Replace$(DecodeHex, "%11", Chr$(17))
  350.     DecodeHex = Replace$(DecodeHex, "%12", Chr$(18))
  351.     DecodeHex = Replace$(DecodeHex, "%13", Chr$(19))
  352.     DecodeHex = Replace$(DecodeHex, "%14", Chr$(20))
  353.     DecodeHex = Replace$(DecodeHex, "%15", Chr$(21))
  354.     DecodeHex = Replace$(DecodeHex, "%16", Chr$(22))
  355.     DecodeHex = Replace$(DecodeHex, "%17", Chr$(23))
  356.     DecodeHex = Replace$(DecodeHex, "%18", Chr$(24))
  357.     DecodeHex = Replace$(DecodeHex, "%19", Chr$(25))
  358.     DecodeHex = Replace$(DecodeHex, "%1A", Chr$(26))
  359.     DecodeHex = Replace$(DecodeHex, "%1B", Chr$(27))
  360.     DecodeHex = Replace$(DecodeHex, "%1C", Chr$(28))
  361.     DecodeHex = Replace$(DecodeHex, "%1D", Chr$(29))
  362.     DecodeHex = Replace$(DecodeHex, "%1E", Chr$(30))
  363.     DecodeHex = Replace$(DecodeHex, "%1F", Chr$(31))
  364.     DecodeHex = Replace$(DecodeHex, "%20", Chr$(32))
  365.     DecodeHex = Replace$(DecodeHex, "%21", Chr$(33))
  366.     DecodeHex = Replace$(DecodeHex, "%22", Chr$(34))
  367.     DecodeHex = Replace$(DecodeHex, "%23", Chr$(35))
  368.     DecodeHex = Replace$(DecodeHex, "%24", Chr$(36))
  369.     DecodeHex = Replace$(DecodeHex, "%25", Chr$(37))
  370.     DecodeHex = Replace$(DecodeHex, "%26", Chr$(38))
  371.     DecodeHex = Replace$(DecodeHex, "%27", Chr$(39))
  372.     DecodeHex = Replace$(DecodeHex, "%28", Chr$(40))
  373.     DecodeHex = Replace$(DecodeHex, "%29", Chr$(41))
  374.     DecodeHex = Replace$(DecodeHex, "%2A", Chr$(42))
  375.     DecodeHex = Replace$(DecodeHex, "%2B", Chr$(43))
  376.     DecodeHex = Replace$(DecodeHex, "%2C", Chr$(44))
  377.     DecodeHex = Replace$(DecodeHex, "%2D", Chr$(45))
  378.     DecodeHex = Replace$(DecodeHex, "%2E", Chr$(46))
  379.     DecodeHex = Replace$(DecodeHex, "%2F", Chr$(47))
  380.     DecodeHex = Replace$(DecodeHex, "%30", Chr$(48))
  381.     DecodeHex = Replace$(DecodeHex, "%31", Chr$(49))
  382.     DecodeHex = Replace$(DecodeHex, "%32", Chr$(50))
  383.     DecodeHex = Replace$(DecodeHex, "%33", Chr$(51))
  384.     DecodeHex = Replace$(DecodeHex, "%34", Chr$(52))
  385.     DecodeHex = Replace$(DecodeHex, "%35", Chr$(53))
  386.     DecodeHex = Replace$(DecodeHex, "%36", Chr$(54))
  387.     DecodeHex = Replace$(DecodeHex, "%37", Chr$(55))
  388.     DecodeHex = Replace$(DecodeHex, "%38", Chr$(56))
  389.     DecodeHex = Replace$(DecodeHex, "%39", Chr$(57))
  390.     DecodeHex = Replace$(DecodeHex, "%3A", Chr$(58))
  391.     DecodeHex = Replace$(DecodeHex, "%3B", Chr$(59))
  392.     DecodeHex = Replace$(DecodeHex, "%3C", Chr$(60))
  393.     DecodeHex = Replace$(DecodeHex, "%3D", Chr$(61))
  394.     DecodeHex = Replace$(DecodeHex, "%3E", Chr$(62))
  395.     DecodeHex = Replace$(DecodeHex, "%3F", Chr$(63))
  396.     DecodeHex = Replace$(DecodeHex, "%40", Chr$(64))
  397.     DecodeHex = Replace$(DecodeHex, "%41", Chr$(65))
  398.     DecodeHex = Replace$(DecodeHex, "%42", Chr$(66))
  399.     DecodeHex = Replace$(DecodeHex, "%43", Chr$(67))
  400.     DecodeHex = Replace$(DecodeHex, "%44", Chr$(68))
  401.     DecodeHex = Replace$(DecodeHex, "%45", Chr$(69))
  402.     DecodeHex = Replace$(DecodeHex, "%46", Chr$(70))
  403.     DecodeHex = Replace$(DecodeHex, "%47", Chr$(71))
  404.     DecodeHex = Replace$(DecodeHex, "%48", Chr$(72))
  405.     DecodeHex = Replace$(DecodeHex, "%49", Chr$(73))
  406.     DecodeHex = Replace$(DecodeHex, "%4A", Chr$(74))
  407.     DecodeHex = Replace$(DecodeHex, "%4B", Chr$(75))
  408.     DecodeHex = Replace$(DecodeHex, "%4C", Chr$(76))
  409.     DecodeHex = Replace$(DecodeHex, "%4D", Chr$(77))
  410.     DecodeHex = Replace$(DecodeHex, "%4E", Chr$(78))
  411.     DecodeHex = Replace$(DecodeHex, "%4F", Chr$(79))
  412.     DecodeHex = Replace$(DecodeHex, "%50", Chr$(80))
  413.     DecodeHex = Replace$(DecodeHex, "%51", Chr$(81))
  414.     DecodeHex = Replace$(DecodeHex, "%52", Chr$(82))
  415.     DecodeHex = Replace$(DecodeHex, "%53", Chr$(83))
  416.     DecodeHex = Replace$(DecodeHex, "%54", Chr$(84))
  417.     DecodeHex = Replace$(DecodeHex, "%55", Chr$(85))
  418.     DecodeHex = Replace$(DecodeHex, "%56", Chr$(86))
  419.     DecodeHex = Replace$(DecodeHex, "%57", Chr$(87))
  420.     DecodeHex = Replace$(DecodeHex, "%58", Chr$(88))
  421.     DecodeHex = Replace$(DecodeHex, "%59", Chr$(89))
  422.     DecodeHex = Replace$(DecodeHex, "%5A", Chr$(90))
  423.     DecodeHex = Replace$(DecodeHex, "%5B", Chr$(91))
  424.     DecodeHex = Replace$(DecodeHex, "%5C", Chr$(92))
  425.     DecodeHex = Replace$(DecodeHex, "%5D", Chr$(93))
  426.     DecodeHex = Replace$(DecodeHex, "%5E", Chr$(94))
  427.     DecodeHex = Replace$(DecodeHex, "%5F", Chr$(95))
  428.     DecodeHex = Replace$(DecodeHex, "%60", Chr$(96))
  429.     DecodeHex = Replace$(DecodeHex, "%61", Chr$(97))
  430.     DecodeHex = Replace$(DecodeHex, "%62", Chr$(98))
  431.     DecodeHex = Replace$(DecodeHex, "%63", Chr$(99))
  432.     DecodeHex = Replace$(DecodeHex, "%64", Chr$(100))
  433.     DecodeHex = Replace$(DecodeHex, "%65", Chr$(101))
  434.     DecodeHex = Replace$(DecodeHex, "%66", Chr$(102))
  435.     DecodeHex = Replace$(DecodeHex, "%67", Chr$(103))
  436.     DecodeHex = Replace$(DecodeHex, "%68", Chr$(104))
  437.     DecodeHex = Replace$(DecodeHex, "%69", Chr$(105))
  438.     DecodeHex = Replace$(DecodeHex, "%6A", Chr$(106))
  439.     DecodeHex = Replace$(DecodeHex, "%6B", Chr$(107))
  440.     DecodeHex = Replace$(DecodeHex, "%6C", Chr$(108))
  441.     DecodeHex = Replace$(DecodeHex, "%6D", Chr$(109))
  442.     DecodeHex = Replace$(DecodeHex, "%6E", Chr$(110))
  443.     DecodeHex = Replace$(DecodeHex, "%6F", Chr$(111))
  444.     DecodeHex = Replace$(DecodeHex, "%70", Chr$(112))
  445.     DecodeHex = Replace$(DecodeHex, "%71", Chr$(113))
  446.     DecodeHex = Replace$(DecodeHex, "%72", Chr$(114))
  447.     DecodeHex = Replace$(DecodeHex, "%73", Chr$(115))
  448.     DecodeHex = Replace$(DecodeHex, "%74", Chr$(116))
  449.     DecodeHex = Replace$(DecodeHex, "%75", Chr$(117))
  450.     DecodeHex = Replace$(DecodeHex, "%76", Chr$(118))
  451.     DecodeHex = Replace$(DecodeHex, "%77", Chr$(119))
  452.     DecodeHex = Replace$(DecodeHex, "%78", Chr$(120))
  453.     DecodeHex = Replace$(DecodeHex, "%79", Chr$(121))
  454.     DecodeHex = Replace$(DecodeHex, "%7A", Chr$(122))
  455.     DecodeHex = Replace$(DecodeHex, "%7B", Chr$(123))
  456.     DecodeHex = Replace$(DecodeHex, "%7C", Chr$(124))
  457.     DecodeHex = Replace$(DecodeHex, "%7D", Chr$(125))
  458.     DecodeHex = Replace$(DecodeHex, "%7E", Chr$(126))
  459.     DecodeHex = Replace$(DecodeHex, "%7F", Chr$(127))
  460.     DecodeHex = Replace$(DecodeHex, "%80", Chr$(128))
  461.     DecodeHex = Replace$(DecodeHex, "%81", Chr$(129))
  462.     DecodeHex = Replace$(DecodeHex, "%82", Chr$(130))
  463.     DecodeHex = Replace$(DecodeHex, "%83", Chr$(131))
  464.     DecodeHex = Replace$(DecodeHex, "%84", Chr$(132))
  465.     DecodeHex = Replace$(DecodeHex, "%85", Chr$(133))
  466.     DecodeHex = Replace$(DecodeHex, "%86", Chr$(134))
  467.     DecodeHex = Replace$(DecodeHex, "%87", Chr$(135))
  468.     DecodeHex = Replace$(DecodeHex, "%88", Chr$(136))
  469.     DecodeHex = Replace$(DecodeHex, "%89", Chr$(137))
  470.     DecodeHex = Replace$(DecodeHex, "%8A", Chr$(138))
  471.     DecodeHex = Replace$(DecodeHex, "%8B", Chr$(139))
  472.     DecodeHex = Replace$(DecodeHex, "%8C", Chr$(140))
  473.     DecodeHex = Replace$(DecodeHex, "%8D", Chr$(141))
  474.     DecodeHex = Replace$(DecodeHex, "%8E", Chr$(142))
  475.     DecodeHex = Replace$(DecodeHex, "%8F", Chr$(143))
  476.     DecodeHex = Replace$(DecodeHex, "%90", Chr$(144))
  477.     DecodeHex = Replace$(DecodeHex, "%91", Chr$(145))
  478.     DecodeHex = Replace$(DecodeHex, "%92", Chr$(146))
  479.     DecodeHex = Replace$(DecodeHex, "%93", Chr$(147))
  480.     DecodeHex = Replace$(DecodeHex, "%94", Chr$(148))
  481.     DecodeHex = Replace$(DecodeHex, "%95", Chr$(149))
  482.     DecodeHex = Replace$(DecodeHex, "%96", Chr$(150))
  483.     DecodeHex = Replace$(DecodeHex, "%97", Chr$(151))
  484.     DecodeHex = Replace$(DecodeHex, "%98", Chr$(152))
  485.     DecodeHex = Replace$(DecodeHex, "%99", Chr$(153))
  486.     DecodeHex = Replace$(DecodeHex, "%9A", Chr$(154))
  487.     DecodeHex = Replace$(DecodeHex, "%9B", Chr$(155))
  488.     DecodeHex = Replace$(DecodeHex, "%9C", Chr$(156))
  489.     DecodeHex = Replace$(DecodeHex, "%9D", Chr$(157))
  490.     DecodeHex = Replace$(DecodeHex, "%9E", Chr$(158))
  491.     DecodeHex = Replace$(DecodeHex, "%9F", Chr$(159))
  492.     DecodeHex = Replace$(DecodeHex, "%A0", Chr$(160))
  493.     DecodeHex = Replace$(DecodeHex, "%A1", Chr$(161))
  494.     DecodeHex = Replace$(DecodeHex, "%A2", Chr$(162))
  495.     DecodeHex = Replace$(DecodeHex, "%A3", Chr$(163))
  496.     DecodeHex = Replace$(DecodeHex, "%A4", Chr$(164))
  497.     DecodeHex = Replace$(DecodeHex, "%A5", Chr$(165))
  498.     DecodeHex = Replace$(DecodeHex, "%A6", Chr$(166))
  499.     DecodeHex = Replace$(DecodeHex, "%A7", Chr$(167))
  500.     DecodeHex = Replace$(DecodeHex, "%A8", Chr$(168))
  501.     DecodeHex = Replace$(DecodeHex, "%A9", Chr$(169))
  502.     DecodeHex = Replace$(DecodeHex, "%AA", Chr$(170))
  503.     DecodeHex = Replace$(DecodeHex, "%AB", Chr$(171))
  504.     DecodeHex = Replace$(DecodeHex, "%AC", Chr$(172))
  505.     DecodeHex = Replace$(DecodeHex, "%AD", Chr$(173))
  506.     DecodeHex = Replace$(DecodeHex, "%AE", Chr$(174))
  507.     DecodeHex = Replace$(DecodeHex, "%AF", Chr$(175))
  508.     DecodeHex = Replace$(DecodeHex, "%B0", Chr$(176))
  509.     DecodeHex = Replace$(DecodeHex, "%B1", Chr$(177))
  510.     DecodeHex = Replace$(DecodeHex, "%B2", Chr$(178))
  511.     DecodeHex = Replace$(DecodeHex, "%B3", Chr$(179))
  512.     DecodeHex = Replace$(DecodeHex, "%B4", Chr$(180))
  513.     DecodeHex = Replace$(DecodeHex, "%B5", Chr$(181))
  514.     DecodeHex = Replace$(DecodeHex, "%B6", Chr$(182))
  515.     DecodeHex = Replace$(DecodeHex, "%B7", Chr$(183))
  516.     DecodeHex = Replace$(DecodeHex, "%B8", Chr$(184))
  517.     DecodeHex = Replace$(DecodeHex, "%B9", Chr$(185))
  518.     DecodeHex = Replace$(DecodeHex, "%BA", Chr$(186))
  519.     DecodeHex = Replace$(DecodeHex, "%BB", Chr$(187))
  520.     DecodeHex = Replace$(DecodeHex, "%BC", Chr$(188))
  521.     DecodeHex = Replace$(DecodeHex, "%BD", Chr$(189))
  522.     DecodeHex = Replace$(DecodeHex, "%BE", Chr$(190))
  523.     DecodeHex = Replace$(DecodeHex, "%BF", Chr$(191))
  524.     DecodeHex = Replace$(DecodeHex, "%C0", Chr$(192))
  525.     DecodeHex = Replace$(DecodeHex, "%C1", Chr$(193))
  526.     DecodeHex = Replace$(DecodeHex, "%C2", Chr$(194))
  527.     DecodeHex = Replace$(DecodeHex, "%C3", Chr$(195))
  528.     DecodeHex = Replace$(DecodeHex, "%C4", Chr$(196))
  529.     DecodeHex = Replace$(DecodeHex, "%C5", Chr$(197))
  530.     DecodeHex = Replace$(DecodeHex, "%C6", Chr$(198))
  531.     DecodeHex = Replace$(DecodeHex, "%C7", Chr$(199))
  532.     DecodeHex = Replace$(DecodeHex, "%C8", Chr$(200))
  533.     DecodeHex = Replace$(DecodeHex, "%C9", Chr$(201))
  534.     DecodeHex = Replace$(DecodeHex, "%CA", Chr$(202))
  535.     DecodeHex = Replace$(DecodeHex, "%CB", Chr$(203))
  536.     DecodeHex = Replace$(DecodeHex, "%CC", Chr$(204))
  537.     DecodeHex = Replace$(DecodeHex, "%CD", Chr$(205))
  538.     DecodeHex = Replace$(DecodeHex, "%CE", Chr$(206))
  539.     DecodeHex = Replace$(DecodeHex, "%CF", Chr$(207))
  540.     DecodeHex = Replace$(DecodeHex, "%D0", Chr$(208))
  541.     DecodeHex = Replace$(DecodeHex, "%D1", Chr$(209))
  542.     DecodeHex = Replace$(DecodeHex, "%D2", Chr$(210))
  543.     DecodeHex = Replace$(DecodeHex, "%D3", Chr$(211))
  544.     DecodeHex = Replace$(DecodeHex, "%D4", Chr$(212))
  545.     DecodeHex = Replace$(DecodeHex, "%D5", Chr$(213))
  546.     DecodeHex = Replace$(DecodeHex, "%D6", Chr$(214))
  547.     DecodeHex = Replace$(DecodeHex, "%D7", Chr$(215))
  548.     DecodeHex = Replace$(DecodeHex, "%D8", Chr$(216))
  549.     DecodeHex = Replace$(DecodeHex, "%D9", Chr$(217))
  550.     DecodeHex = Replace$(DecodeHex, "%DA", Chr$(218))
  551.     DecodeHex = Replace$(DecodeHex, "%DB", Chr$(219))
  552.     DecodeHex = Replace$(DecodeHex, "%DC", Chr$(220))
  553.     DecodeHex = Replace$(DecodeHex, "%DD", Chr$(221))
  554.     DecodeHex = Replace$(DecodeHex, "%DE", Chr$(222))
  555.     DecodeHex = Replace$(DecodeHex, "%DF", Chr$(223))
  556.     DecodeHex = Replace$(DecodeHex, "%E0", Chr$(224))
  557.     DecodeHex = Replace$(DecodeHex, "%E1", Chr$(225))
  558.     DecodeHex = Replace$(DecodeHex, "%E2", Chr$(226))
  559.     DecodeHex = Replace$(DecodeHex, "%E3", Chr$(227))
  560.     DecodeHex = Replace$(DecodeHex, "%E4", Chr$(228))
  561.     DecodeHex = Replace$(DecodeHex, "%E5", Chr$(229))
  562.     DecodeHex = Replace$(DecodeHex, "%E6", Chr$(230))
  563.     DecodeHex = Replace$(DecodeHex, "%E7", Chr$(231))
  564.     DecodeHex = Replace$(DecodeHex, "%E8", Chr$(232))
  565.     DecodeHex = Replace$(DecodeHex, "%E9", Chr$(233))
  566.     DecodeHex = Replace$(DecodeHex, "%EA", Chr$(234))
  567.     DecodeHex = Replace$(DecodeHex, "%EB", Chr$(235))
  568.     DecodeHex = Replace$(DecodeHex, "%EC", Chr$(236))
  569.     DecodeHex = Replace$(DecodeHex, "%ED", Chr$(237))
  570.     DecodeHex = Replace$(DecodeHex, "%EE", Chr$(238))
  571.     DecodeHex = Replace$(DecodeHex, "%EF", Chr$(239))
  572.     DecodeHex = Replace$(DecodeHex, "%F0", Chr$(240))
  573.     DecodeHex = Replace$(DecodeHex, "%F1", Chr$(241))
  574.     DecodeHex = Replace$(DecodeHex, "%F2", Chr$(242))
  575.     DecodeHex = Replace$(DecodeHex, "%F3", Chr$(243))
  576.     DecodeHex = Replace$(DecodeHex, "%F4", Chr$(244))
  577.     DecodeHex = Replace$(DecodeHex, "%F5", Chr$(245))
  578.     DecodeHex = Replace$(DecodeHex, "%F6", Chr$(246))
  579.     DecodeHex = Replace$(DecodeHex, "%F7", Chr$(247))
  580.     DecodeHex = Replace$(DecodeHex, "%F8", Chr$(248))
  581.     DecodeHex = Replace$(DecodeHex, "%F9", Chr$(249))
  582.     DecodeHex = Replace$(DecodeHex, "%FA", Chr$(250))
  583.     DecodeHex = Replace$(DecodeHex, "%FB", Chr$(251))
  584.     DecodeHex = Replace$(DecodeHex, "%FC", Chr$(252))
  585.     DecodeHex = Replace$(DecodeHex, "%FD", Chr$(253))
  586.     DecodeHex = Replace$(DecodeHex, "%FE", Chr$(254))
  587.     DecodeHex = Replace$(DecodeHex, "%FF", Chr$(255))
  588.     
  589. End Function
  590.  
  591.  
  592. Private Sub Script_Sink_Error()
  593.     Err.Raise Script.Error.Number, Script.Error.Source, Script.Error.Description
  594.     
  595. End Sub
  596.